home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
011-020
/
amok11
/
r.o.m.
/
m2sources
/
stringinout.def
< prev
next >
Wrap
Text File
|
1993-11-04
|
4KB
|
82 lines
DEFINITION MODULE StringInOut;
(*
Created: 10.11.1987
Changed: 18.1.88/08.02.88/29.02.88 by
Stefan Salewski
Stolper Weg 3
2160 Stade West-Germany
Tel: 04141/61130
Note: compiled with AMIGA Modula-2 System by AMSoft Version from 5.5.88
This Module may be freely copied. But please
leave my name in. Thanks....Stefan
Dieser Modul dient zur (komfortablen) Ein- und Ausgabe von Strings und
zun Einlesen einzelner Zeichen.
OpenNewWindow oeffnet ein Intuition-Window. Die groesse wird in Zeichen
angegeben, die linke obere Ecke in Pixel. Das Fenster erhaelt die Gadgets,
die der Variablen wFlags entsprechen. Ist wFlags=FlagSet{}, so hat das
Window keinen Titelbalken und es passen bei maximaler Hoehe auch im 60
Zeichenmodus 27 Textzeilen ins Window, mit Titel nur 26. Ist close in
wFlags enthalten, so bekonnt man ein closeWindow-Message beim anklicken
dieses Gadgets und muss sie selber auswerten. Das Window kann auch mit einem
Menu versehen werden, dann muessen die Menu-Messages aber vom Dir ausgewertet
werden. Es koennen mehrere Fenster unabhangig voneinander benutzt
werden. SetColor setzt die vier Workbench-Farben. GetPos bzw.
SetPos liest bzw. setzt die Cursorposition(Spalten- und Zeilenzahl).
Links-Oben => Spalte=x=0 und Zeile=y=1
ReadString liest ueber ein StringGadget eine Zeichenkette ein.
Jetzt werden von ReadString und GetKey nicht mehr alle Messages im UserPort
verbraucht,sondern nur Tastatureingaben. Andere Message werden nicht
vom UserPort entfernt, sondern beenden die Procedure( gleichzeitig bekommt
inputOK den Wert FALSE). Dadurch koennen
sie vom Hauptprogramm ausgewertet werden ( z.B. Menuoperationen).
Die IDCMPFlags des Windows werden jetzt am ende der Procedure restauriert.
Nachdem ReadString durch druecken der Return- oder Enter-Taste oder
durch deaktivieren mit der Maus beendet
wurde, springt der (unsichtbare) Cursor auf den Anfang der naechnsten
Zeile. WriteString scheibt an die momentane Cursorposition. Ist
NewLine=TRUE, so wird nach der Schreiboperation auf den Anfang der
naechsten Zeile gesprungen bzw. der Bildschirm wird nach oben
gescrollt. Bei NewLine=FALSE bleibt der Cursor hinter dem geschriebenen
Wort stehen.Es kann an dieser Position weitergeschrieben oder gelesen
werden. Wird der rechte Rand des Fensters erreicht,bleibt der Cursor
auf der letzten Spalte stehen. GetKey wartet auf das druecken einer
Taste(ohne Return) und liefert das entsprechnende Zeichen.
Durch SetClear wird bestimmt, ob der vorhandene Wert von
str bei der Stringeingabe ins StringGadget uebernommen werden soll,
oder ob er geloescht werden soll.
*)
FROM Intuition IMPORT WindowPtr;
TYPE
StrGadgetLaenge=[1..79];
Flags=(close,drag,depth);
FlagSet= SET OF Flags;
VAR
inputOK:BOOLEAN;
PROCEDURE OpenNewWindow(VAR wP:WindowPtr;x,y,w,h:INTEGER;wFlags:FlagSet;
titel:ARRAY OF CHAR);
PROCEDURE CloseNewWindow(wP:WindowPtr);
PROCEDURE ClearWindow(wP:WindowPtr);
PROCEDURE SetColors(wP:WindowPtr;background,input,output:INTEGER);
PROCEDURE SetClear(wP:WindowPtr;clearInput:BOOLEAN);
PROCEDURE GetPos(wP:WindowPtr;VAR x,y:INTEGER);
PROCEDURE SetPos(wP:WindowPtr;x,y:INTEGER);
PROCEDURE GetKey(wP:WindowPtr):CHAR;
PROCEDURE ReadString(wP:WindowPtr;text:ARRAY OF CHAR;
VAR str:ARRAY OF CHAR;sichtbareZeichen:StrGadgetLaenge);
PROCEDURE WriteString(wP:WindowPtr;s:ARRAY OF CHAR;newLine:BOOLEAN);
PROCEDURE DeleteChar(wP:WindowPtr;chars:INTEGER);
(* DeleteChar(w,5) entspraeche WriteString(w,' ',FALSE) wenn
die geschriebenen Leerzeichen Hintergrundfarbe haetten.
Die Leerzeichen sind aber farblos (nur Cursorbewegung)
*)
END StringInOut.def